package practice;

/**
 * 掷双骰子游戏是赌场中非常流行的游戏。编写程序玩这个游戏的
 * 一个变种，具体：
 * 掷两个骰子，每个骰子有六面，分别表示1，2，……，6。检查这两个骰
 * 子的和。如果和为2、3或12，你就输了；如果和是7或者11，你就赢了；
 * 但如果和是其他数，就确定了一个点，继续掷骰子，直到掷出一个7或者
 * 掷出和刚才相同的点数。如果掷出的是7，你就输了，如果掷出的点数和
 * 你前一次掷出的点数相同，你就赢了。
 * ——设计并实现相关方法
 */

public class ClassTest4_4 {
    public static void main( String[] args ) {
        //初始化用来记录骰子数与数字和的变量，设定判断游戏胜负的胜利状态
        int number1, number2, sum;
        boolean iswinonce = true;
        boolean iswinner = false;
        boolean islose = false;

        System.out.println("骰子游戏开始！");
        number1 = ( int ) (Math.random() * 6 + 1);
        number2 = ( int ) (Math.random() * 6 + 1);
        sum = number1 + number2;
        System.out.println("掷出的两个数分别是：" + number1 + "," + number2 + "。" + "两个数字和为：" + sum);

        //第一轮掷数，2、3、12失败，7，11胜利
        switch ( sum ) {
            case 2:
            case 3:
            case 12: {
                islose = true;
                iswinonce = false;
                break;
            }
            case 7:
            case 11: {
                iswinner = true;
                iswinonce = false;
                break;
            }
        }

        //若首轮未决出胜负，判断第二轮。
        if (iswinonce) {
            System.out.println("第一轮掷数未分胜负，进行第二轮掷数！");
            int tmpsum = 0;
            int count = 0;
            do {
                number1 = ( int ) (Math.random() * 6 + 1);
                number2 = ( int ) (Math.random() * 6 + 1);
                tmpsum = number1 + number2;
                count++;
                System.out.println("第二轮第" + count + "次掷数为：" + number1 + "," + number2 + "。" + "两个数字和为：" + tmpsum);
            }
            while ( tmpsum != sum && tmpsum != 7 );

            if (tmpsum == 7) {
                islose = true;
            }

            if (tmpsum == sum) {
                iswinner = true;
            }
        }

        if (islose) {
            System.out.println("你输了！");
        }

        if (iswinner) {
            System.out.println("你赢了！");
        }

    }
}
